<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:job="livcos.org/ns/process/job" xmlns:r="http://www.w3.org/1999/XSL/Transform_RESULT"
	xmlns:e="livcos.org/ns/editor" xmlns="http://www.w3.org/1999/xhtml"
	exclude-result-prefixes="job e">

	<xsl:import href="style/SimpleId.xsl"/>

	<xsl:variable name="objId"/>
	<xsl:variable name="scope" select="'content'"/>
	<xsl:variable name="id"/>
	<xsl:variable name="data" as="node()?"/>

	<xsl:template name="printBody">
	</xsl:template>

	<xsl:template name="printNamespaceDecls">
	</xsl:template>

	<xsl:template name="printParameters">
	</xsl:template>
	
	<xsl:template match="/">
		<xsl:choose>
			<xsl:when test="$data">
				<xsl:apply-templates select="$data" mode="applyNode"/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:call-template name="applyNode">
					<xsl:with-param name="parentNode" select="document(concat($objId, '.', $scope))"/>
					<xsl:with-param name="id" select="$id"/>
				</xsl:call-template>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

	<xsl:template match="node()|@*" mode="applyNode">
		<input type="hidden" name="objId" value="{$objId}"/>
		<input type="hidden" name="scope" value="{$scope}"/>
		<xsl:if test="normalize-space($id) != ''">
			<input type="hidden" name="id" value="{$id}"/>
		</xsl:if>
		<xsl:call-template name="printParameters"/>
		<table class="ed_body">
			<tbody>
				<xsl:call-template name="printBody"/>
			</tbody>
		</table>
		<div class="ed_footer">
			<div id="_richtextToolbar">&#160;</div>
			<xsl:call-template name="printNamespaceDecls"/>
			<input type="submit" name="update" value="Update" class="ed_action"/>
			<input type="button" onclick="this.form._panel.close();" value="Cancel" class="ed_action"/>
		</div>
	</xsl:template>
	
	<xsl:template match="node()" mode="content root_content" priority="0">
		<xsl:copy>
			<xsl:apply-templates select="node()" mode="content"/>
		</xsl:copy>
	</xsl:template>

	<xsl:template match="comment()" mode="content root_content" priority="0.1">
		<xsl:value-of select="."/>
	</xsl:template>

	<xsl:template match="*" mode="root_content" priority="0.1">
		<xsl:apply-templates select="node()" mode="content"/>
	</xsl:template>

	<xsl:template match="*" mode="content" priority="0.1">
		<xsl:variable name="htmlTag">
			<xsl:if test="namespace-uri(.) = 'livcos.org/ns/doc'">
				<xsl:choose>
					<xsl:when test="local-name(.) = 'br'">br</xsl:when>
					<xsl:when test="local-name(.) = 'strong'">b</xsl:when>
					<xsl:when test="local-name(.) = 'em'">i</xsl:when>
					<xsl:when test="local-name(.) = 'u'">u</xsl:when>
					<xsl:when test="local-name(.) = 's'">strike</xsl:when>
					<xsl:when test="local-name(.) = 'sub'">sub</xsl:when>
					<xsl:when test="local-name(.) = 'sup'">sup</xsl:when>
				</xsl:choose>
			</xsl:if>
		</xsl:variable>
		<xsl:choose>
			<xsl:when test="$htmlTag != ''">
				<xsl:element name="{$htmlTag}" namespace="http://www.w3.org/1999/xhtml">
					<xsl:apply-templates select="node()" mode="content"/>
				</xsl:element>
			</xsl:when>
			<xsl:otherwise>
				<pre style="color: red"><xsl:apply-templates select="." mode="escape"/></pre>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

	<xsl:template mode="content"
		match="*[(local-name(.) = 'link') and (namespace-uri(.) = 'livcos.org/ns/doc')]">
		<a id="{@id}">
			<xsl:attribute name="href">
				<xsl:choose>
					<xsl:when test="normalize-space(@ref) != ''">
						<xsl:value-of select="@ref"/>
					</xsl:when>
					<xsl:when test="normalize-space(@url) != ''">
						<xsl:value-of select="@url"/>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>#</xsl:text>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:attribute>
			<xsl:apply-templates select="node()" mode="content"/>
		</a>
	</xsl:template>

	<xsl:template match="*" mode="root_escape" priority="0.1">
		<xsl:apply-templates select="*" mode="escape">
			<xsl:with-param name="root" select="1"/>
		</xsl:apply-templates>
	</xsl:template>

	<xsl:template match="@*" mode="escape">
		<xsl:text> </xsl:text>
		<xsl:value-of select="name(.)"/>
		<xsl:text>="</xsl:text>
		<xsl:value-of select="."/>
		<xsl:text>"</xsl:text>
	</xsl:template>

	<xsl:template match="*" mode="escape">
		<xsl:param name="root"/>
		<xsl:text><![CDATA[<]]></xsl:text>
		<xsl:value-of select="name(.)"/>
		<xsl:apply-templates select="@*" mode="escape"/>
		<xsl:for-each select="namespace::*[local-name(.) != 'xml']">
			<xsl:variable name="prefix" select="local-name(.)"/>
			<xsl:variable name="nsUri" select="."/>
			<xsl:if test="not(../../namespace::*[(local-name(.) = $prefix) and (. = $nsUri)]) or $root">
				<xsl:text> xmlns</xsl:text>
				<xsl:if test="$prefix != ''">:</xsl:if>
				<xsl:value-of select="$prefix"/>="<xsl:value-of select="$nsUri"/>
				<xsl:text>"</xsl:text>
			</xsl:if>
		</xsl:for-each>
		<xsl:choose>
			<xsl:when test="node()">
				<xsl:text><![CDATA[>]]></xsl:text>
				<xsl:apply-templates select="node()" mode="escape"/>
				<xsl:text><![CDATA[<]]>/</xsl:text>
				<xsl:value-of select="name(.)"/>
				<xsl:text><![CDATA[>]]></xsl:text>
			</xsl:when>
			<xsl:otherwise>
				<xsl:text>/<![CDATA[>]]></xsl:text>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

</xsl:stylesheet>
